// app.js
// 导入API模块
const api = require('./utils/api');

App({
  globalData: {
    userInfo: null,
    api: api,
    selectedCategoryId: null, // 存储选中的分类ID
    apiBaseUrl: 'https://www.thpws.cn' // API服务器地址
  },
  
  onLaunch: function() {
    // 清除请求缓存但保留用户信息
    wx.removeStorage({
      key: 'networkCache',
      success: () => {
        console.log('已清除网络缓存');
      }
    });
    
    // 配置网络请求设置
    wx.setBackgroundFetchToken({
      token: 'clear_cache_token_' + Date.now()
    });
    
    // 获取本地存储的用户信息和token
    const userInfo = wx.getStorageSync('userInfo');
    const token = wx.getStorageSync('token');
    
    if (userInfo && token) {
      this.globalData.userInfo = userInfo;
      console.log('已从本地存储获取用户信息', userInfo);
      
      // 验证token有效性
      this.checkToken();
    } else {
      console.log('未找到本地存储的用户信息或token');
    }
    
    // 获取系统信息设置导航栏高度
    this.setNavBarInfo();
  },
  
  // 设置导航栏信息
  setNavBarInfo: function() {
    // 获取系统信息
    const systemInfo = wx.getSystemInfoSync();
    // 胶囊按钮位置信息
    const menuButtonInfo = wx.getMenuButtonBoundingClientRect();
    
    // 导航栏高度 = 状态栏高度 + 胶囊高度 + (胶囊顶部距离状态栏底部的距离) * 2
    const navBarHeight = systemInfo.statusBarHeight + menuButtonInfo.height + (menuButtonInfo.top - systemInfo.statusBarHeight) * 2;
    
    this.globalData.navBarHeight = navBarHeight;
    this.globalData.statusBarHeight = systemInfo.statusBarHeight;
    this.globalData.menuButtonHeight = menuButtonInfo.height;
  },
  
  // 清除登录信息，但保留用户身份标识相关数据
  clearLoginInfo: function() {
    console.log('清除登录信息，但保留用户身份标识相关数据');
    
    // 只保留openid，清除其他登录相关信息
    const openid = wx.getStorageSync('wx_openid');
    
    // 清除所有登录相关存储，但先保存openid
    wx.clearStorageSync();
    
    // 恢复保存openid
    if (openid) {
      wx.setStorageSync('wx_openid', openid);
      console.log('保留了openid:', openid);
    }
    
    this.globalData.userInfo = null;
    console.log('已清除登录信息，保留了微信openid');
  },
  
  // 验证token有效性
  checkToken: function() {
    const token = wx.getStorageSync('token');
    const userInfo = wx.getStorageSync('userInfo');
    
    if (!token || !userInfo) {
      console.log('未找到token或用户信息，跳过验证');
      return;
    }
    
    api.user.getInfo()
      .then(res => {
        console.log('Token有效，用户信息:', res);
        
        // 简单保存用户信息和openid
        this.globalData.userInfo = res;
        wx.setStorageSync('userInfo', res);
        
        // 确保openid被保存
        if (res.openid) {
          wx.setStorageSync('wx_openid', res.openid);
        }
      })
      .catch(err => {
        console.error('Token验证失败:', err);
        // 清除登录信息但保留openid
        this.clearLoginInfo();
      });
  },
  
  // 跳转到登录页面
  goToLogin: function(redirectUrl) {
    const url = redirectUrl ? 
      `/pages/login/login?redirect=${encodeURIComponent(redirectUrl)}` : 
      '/pages/login/login';
    
    wx.navigateTo({
      url: url
    });
  }
})
